UPDATED  (2025-05-10)

"addCurrentTagsToAllTags"			// This add any newly added tags to allTags, so that they will be saved
"addTag", {value: string}
"autoComplete"
"change", {value: currentTags array}			// fired after saving all metadata and JSON files
"change_allTags", {lookup: object,  array: array}
"change_allTags", {lookup: object}
"change_doneButton", {value: Boolean}
"change_exifTool", {value: string}
"change_image", {value: string}
"change_replaceTags", {value: object}
"change_tagRemaps", {value: object}
"change_tags", {lookup: object,  array: array,  allTags_lookup: object }
"change_tags", {lookup: object}
"doneEditing"			// This triggers the done-button action, causing image metadata to be updated and JSON files to be saved, followed by the "change" event
"enterNewTag"			// reacts to the enter key being pressed in the new tag textbox
"focusTagInput"		// give focus to the new-tag input textbox
"hideReplace"
"hideSuggestion"
"init"
"learnReplacement", {from: string,  result: string}			// this temporarily learns about a tag replacement, but it will not be saved until "updateReplaceTags" is triggered
"newTagValue", {value: string}			// reacts to the textbox being modified, typically for updating a button's enable/disable settings
"removeTag", {value: string}
"requestSuggestion", {callback: function}			// read the currently displayed suggestion
"request_allTags", {callback2: function}
"request_tagRemaps", {callback2: function}
"saveJsonFiles"
"selectTag", {value: string}			// react to a tag being selected in the list
"setSuggestion", {value: string}
"showReplace", {value: string}
"showSuggestion", {value: string}
"updateReplaceTags"			// add newly-learned tag-replacements to all known tag-replacements, if those tags are still currently in the list, so that they will be saved